Diakritika pri filtrovani na cast retezce

Otázka od: Lada

26. 7. 2004 10:24

Zdravim vsechny a moc dekuju za pomoc pri filtrovani podle casti retezce.

Funguje to, jen mam problemy s diakritikou. Pokud mam v DB napr. jmeno s
malym pocatecnim pismenem s hackem a filtruju podle velkeho pocatecniho
pismene s hackem... Pokud filtruju podle casti retezce s malym poc.
pismenem s hackem, vse je OK. Obracene to nefunguje stejne.

  
IBQuery1.SQL.Add('Where (UPPER(Jmeno) LIKE :p1) or (UPPER(Prijmeni)
LIKE :p2)');

  IBQuery1.ParamByName('p1').AsString := '%'+UpperCase(editHledej.Text)+
'%';
  IBQuery1.ParamByName('p2').AsString := '%'+UpperCase(editHledej.Text)+
'%';

(DB FB1.5) WIN1250

Poradi mne nekdo jak se to resi..?

Diky moc, Lada.


Odpovedá: Milan Tomes

26. 7. 2004 10:47

V Delphi misto funkce UpperCase pouzij AnsiUpperCase - UpperCase neprevadi
ceske znaky.


S pozdravem

Milan Tomes


> [mailto:delphi-l-owner@clexpert.cz]On Behalf Of Lada
> Sent: Monday, July 26, 2004 11:17 AM
>
> Funguje to, jen mam problemy s diakritikou. Pokud mam v DB napr. jmeno s
> malym pocatecnim pismenem s hackem a filtruju podle velkeho pocatecniho
> pismene s hackem... Pokud filtruju podle casti retezce s malym poc.
> pismenem s hackem, vse je OK. Obracene to nefunguje stejne.


Odpovedá: Lada

26. 7. 2004 12:11

Milan Tomes napsal(a):

>V Delphi misto funkce UpperCase pouzij AnsiUpperCase - UpperCase neprevadi
>ceske znaky.
>
>

Ahoj,

dekuju, ale asi je jeste nekde chyba...

pokud napisu:

 IBQuery1.SQL.Add('Where UPPER(Jmeno) LIKE :p1');
 IBQuery1.ParamByName('p1').AsString :=
'%'+AnsiUpperCase(editHledej.Text)+ '%';

nevyhleda se uz vubec nic s diakritikou.
Pokud pouziju fci UpperCase, vyhleda se alespon vse s diakritikou stejne
velikosti znaku.

Dik moc,

Lada



Odpovedá: Milan Tomes

26. 7. 2004 12:21

A mas databazi definovanou s default character set Win1250 a na sloupci
definovany COLLATE PXW_CSY ???

Pokud ne, tak je nutno pouzit nasledujici:
IBQuery1.SQL.Add('Where UPPER(Jmeno COLLATE PXW_CSY) LIKE :p1');

HTH

Milan Tomes

> [mailto:delphi-l-owner@clexpert.cz]On Behalf Of Lada
> Sent: Monday, July 26, 2004 12:26 PM
>
> pokud napisu:
>
> IBQuery1.SQL.Add('Where UPPER(Jmeno) LIKE :p1');
> IBQuery1.ParamByName('p1').AsString :=
> '%'+AnsiUpperCase(editHledej.Text)+ '%';
>
> nevyhleda se uz vubec nic s diakritikou.
> Pokud pouziju fci UpperCase, vyhleda se alespon vse s diakritikou stejne
> velikosti znaku.


Odpovedá: Jakub Dusek

26. 7. 2004 18:28

Tipoval bych, ze funkce UPPER na databazi to prevede spatne, chce to
tedy donutit ke spravnemu prevedeni diakritiky i ji. Co to vrati pokud
se da pouze "SELECT UPPER(Jmeno) ..." na radek s diaktitikou?

Jakub Dusek
----------------------------------------------------------------------
web: http://www.corexpert.com, mobile: +420 604 615 795, ICQ: 86063232
odesilani smsek, vizitek, log a melodii, snadna integrace do Vaseho IS
     => Sms GateKeeper, Sms GateKeeper Service

======================================================================
Monday, July 26, 2004, 12:25:32 PM, you wrote:

L> Ahoj,

L> dekuju, ale asi je jeste nekde chyba...

L> pokud napisu:

L> IBQuery1.SQL.Add('Where UPPER(Jmeno) LIKE :p1');
L> IBQuery1.ParamByName('p1').AsString :=
L> '%'+AnsiUpperCase(editHledej.Text)+ '%';

L> nevyhleda se uz vubec nic s diakritikou.
L> Pokud pouziju fci UpperCase, vyhleda se alespon vse s diakritikou stejne
L> velikosti znaku.

L> Dik moc,

L> Lada